package com.eshop.modules.system.domain.vo;

import java.util.List;
import com.fasterxml.jackson.annotation.JsonInclude;
import java.io.Serializable;

@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class MenuVo implements Serializable
{
    private String name;
    private String path;
    private Boolean hidden;
    private String redirect;
    private String component;
    private Boolean alwaysShow;
    private MenuMetaVo meta;
    private List<MenuVo> children;
    
    public String getName() {
        return this.name;
    }
    
    public String getPath() {
        return this.path;
    }
    
    public Boolean getHidden() {
        return this.hidden;
    }
    
    public String getRedirect() {
        return this.redirect;
    }
    
    public String getComponent() {
        return this.component;
    }
    
    public Boolean getAlwaysShow() {
        return this.alwaysShow;
    }
    
    public MenuMetaVo getMeta() {
        return this.meta;
    }
    
    public List<MenuVo> getChildren() {
        return this.children;
    }
    
    public void setName(final String name) {
        this.name = name;
    }
    
    public void setPath(final String path) {
        this.path = path;
    }
    
    public void setHidden(final Boolean hidden) {
        this.hidden = hidden;
    }
    
    public void setRedirect(final String redirect) {
        this.redirect = redirect;
    }
    
    public void setComponent(final String component) {
        this.component = component;
    }
    
    public void setAlwaysShow(final Boolean alwaysShow) {
        this.alwaysShow = alwaysShow;
    }
    
    public void setMeta(final MenuMetaVo meta) {
        this.meta = meta;
    }
    
    public void setChildren(final List<MenuVo> children) {
        this.children = children;
    }
    
    @Override
    public boolean equals(final Object o) {
        if (o == this) {
            return true;
        }
        if (!(o instanceof MenuVo)) {
            return false;
        }
        final MenuVo other = (MenuVo)o;
        if (!other.canEqual(this)) {
            return false;
        }
        final Object this$hidden = this.getHidden();
        final Object other$hidden = other.getHidden();
        Label_0065: {
            if (this$hidden == null) {
                if (other$hidden == null) {
                    break Label_0065;
                }
            }
            else if (this$hidden.equals(other$hidden)) {
                break Label_0065;
            }
            return false;
        }
        final Object this$alwaysShow = this.getAlwaysShow();
        final Object other$alwaysShow = other.getAlwaysShow();
        Label_0102: {
            if (this$alwaysShow == null) {
                if (other$alwaysShow == null) {
                    break Label_0102;
                }
            }
            else if (this$alwaysShow.equals(other$alwaysShow)) {
                break Label_0102;
            }
            return false;
        }
        final Object this$name = this.getName();
        final Object other$name = other.getName();
        Label_0139: {
            if (this$name == null) {
                if (other$name == null) {
                    break Label_0139;
                }
            }
            else if (this$name.equals(other$name)) {
                break Label_0139;
            }
            return false;
        }
        final Object this$path = this.getPath();
        final Object other$path = other.getPath();
        Label_0176: {
            if (this$path == null) {
                if (other$path == null) {
                    break Label_0176;
                }
            }
            else if (this$path.equals(other$path)) {
                break Label_0176;
            }
            return false;
        }
        final Object this$redirect = this.getRedirect();
        final Object other$redirect = other.getRedirect();
        Label_0213: {
            if (this$redirect == null) {
                if (other$redirect == null) {
                    break Label_0213;
                }
            }
            else if (this$redirect.equals(other$redirect)) {
                break Label_0213;
            }
            return false;
        }
        final Object this$component = this.getComponent();
        final Object other$component = other.getComponent();
        Label_0250: {
            if (this$component == null) {
                if (other$component == null) {
                    break Label_0250;
                }
            }
            else if (this$component.equals(other$component)) {
                break Label_0250;
            }
            return false;
        }
        final Object this$meta = this.getMeta();
        final Object other$meta = other.getMeta();
        Label_0287: {
            if (this$meta == null) {
                if (other$meta == null) {
                    break Label_0287;
                }
            }
            else if (this$meta.equals(other$meta)) {
                break Label_0287;
            }
            return false;
        }
        final Object this$children = this.getChildren();
        final Object other$children = other.getChildren();
        if (this$children == null) {
            if (other$children == null) {
                return true;
            }
        }
        else if (this$children.equals(other$children)) {
            return true;
        }
        return false;
    }
    
    protected boolean canEqual(final Object other) {
        return other instanceof MenuVo;
    }
    
    @Override
    public int hashCode() {
        final int PRIME = 59;
        int result = 1;
        final Object $hidden = this.getHidden();
        result = result * 59 + (($hidden == null) ? 43 : $hidden.hashCode());
        final Object $alwaysShow = this.getAlwaysShow();
        result = result * 59 + (($alwaysShow == null) ? 43 : $alwaysShow.hashCode());
        final Object $name = this.getName();
        result = result * 59 + (($name == null) ? 43 : $name.hashCode());
        final Object $path = this.getPath();
        result = result * 59 + (($path == null) ? 43 : $path.hashCode());
        final Object $redirect = this.getRedirect();
        result = result * 59 + (($redirect == null) ? 43 : $redirect.hashCode());
        final Object $component = this.getComponent();
        result = result * 59 + (($component == null) ? 43 : $component.hashCode());
        final Object $meta = this.getMeta();
        result = result * 59 + (($meta == null) ? 43 : $meta.hashCode());
        final Object $children = this.getChildren();
        result = result * 59 + (($children == null) ? 43 : $children.hashCode());
        return result;
    }
    
    @Override
    public String toString() {
        return "MenuVo(name=" + this.getName() + ", path=" + this.getPath() + ", hidden=" + this.getHidden() + ", redirect=" + this.getRedirect() + ", component=" + this.getComponent() + ", alwaysShow=" + this.getAlwaysShow() + ", meta=" + this.getMeta() + ", children=" + this.getChildren() + ")";
    }
}
